package util;

import constants.Constants;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by coco-xsj on 2017/7/6.
 */
public class DateUtils {
    /**
     * 判断输入字符串是否符合日期规范，返回值Boolean
     * 格式：yyyy-MM-dd
     * 符合规范返回ture,否则返回false
     */
    public static Boolean isFormat(String date){
        //定义时间格式2017-06-30
        SimpleDateFormat sdf = new SimpleDateFormat(Constants.FORMAT_YEAR_MONTH_DAY);
        //判断是否符合格式
        try {
            sdf.parse(date);
            return true;
        } catch (ParseException e) {
            return false;
        }
    }
    /**
     * 更加全面的format格式判断
     */
    public static Boolean is_Format(String date, String format){
        //定义时间格式比如2017-06-30
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //判断是否符合格式
        try {
            sdf.parse(date);
            return true;
        } catch (ParseException e) {
            return false;
        }
    }
    /**
     * 将时间字符串转换成指定格式的时间
     */
    public static Date parseTime(String time, String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            return sdf.parse(time);
        } catch (ParseException e) {
            return new Date();
        }
    }
    /**
     * 判断一个时间字符串是否在另外一个时间字符串之前
     * param:time1,time2即为两个需要比较的时间
     * param:format即为时间的格式
     */
    public static boolean before(String time1, String time2, String format){
        Boolean is_before = false;
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date1 = sdf.parse(time1);
            Date date2 = sdf.parse(time2);
            if(date1.before(date2)){
                is_before = true;
            }
        } catch (ParseException e) {
            return  false;
        }
        return is_before;
    }
    /**
     * 判断一个时间字符串是否在另外一个时间字符串之后
     * param:time1,time2即为两个需要比较的时间
     * param:format即为时间的格式
     */
    public static boolean after(String time1, String time2, String format){
        Boolean is_after = false;
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date1 = sdf.parse(time1);
            Date date2 = sdf.parse(time2);
            if(date1.after(date2)){
                is_after = true;
            }
        } catch (ParseException e) {
            return  false;
        }
        return is_after;
    }
    /**
     * 计算两个时间字符串的差值，单位为分
     * param:time1,time2即为两个需要计算的时间，默认time1>time2
     * param:format即为时间的格式
     */
    public static int getMinuteOfTwoTime(String time1,String time2, String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        int minute = 0;
        try {
            Date date1 = sdf.parse(time1);
            Date date2 = sdf.parse(time2);
            long millisecond = date1.getTime() - date2.getTime();
            minute = Integer.valueOf(String.valueOf(millisecond/60000));
            return minute;
        } catch (ParseException e) {
            return  minute;
        }
    }
}
